跳到主要内容

VMware 网络设置

参考资料 VMware虚拟机网络配置-NAT篇 参考资料 虚拟机三种网络模式

Virtual Network

虚拟机主要有如下几种模式

  • 桥接模式(Bridged)
  • 网络地址转换模式(NAT)
  • 主机模式(Host-only)

家庭网络拓扑结构一般有两种 1、主机通过拨号直接连接 Internet(主机连的网线) 2、主机处于局域网中、通过路由拨号连接 Internet(主机连的 WIFI 等)

当我们的宿主机(安装虚拟机的电脑)属于第一种网络环境时,由于是ISP(信息服务提供商)分配给你的公网 IP,则不能使用桥接模式化,因为桥接模式需要你拥有属于你机器相同网段内的另一个IP地址。

这种情况下可以使用 NAT或 Host-only。但这个时候你可以修改静态 IP地址:进入系统编辑网卡配置文件,命令为

vim /etc/sysconfig/network-scripts/ifcfg-eth0

编辑完成,保存退出,然后重启虚拟机网卡,使用 ping 命令 ping 外网 ip,测试能否联网;能 ping 通外网 ip,证明桥接模式设置成功。

注意:但是 kali 的配置文件不是 /etc/sysconfig /network-scripts/ifcfg-eth0

而当我们的宿主机属于第二种网络环境,则三种模式可以任意调用。

虚拟网络编辑器

在虚拟网络编辑器中所做的更改影响在主机系统中运行的所有虚拟机。

虚拟网卡

在 VMware Workstation 中,默认有 3 个虚拟交换机,分别是 VMnet0 (使用桥接网络)、VMnet1 (仅主机网络)和 VMnet8 ( NAT 网络),还可以根据需要添加 VMnet 2 ~ VMnet7 和 VMnet9 等 7 个虚拟机交换机

记得要在虚拟机配置上选择这个虚拟网卡

然后安装 Ubuntu 时就可以直接选择这个网卡了

创建虚拟网卡的作用

桥接模式

桥接模式是三种模式中最简单的一种,VMware 安装的时候默认就使用这种配置方式。

在这种模式下,虚拟机相当于局域网中的一台独立机器,和主机处于同一个网段,公用同一个网关。桥接模式使用的是虚拟机的 VMnet0网卡,一般情况下,在虚拟机中将网络设置成自动获取 IP就能直接联网。

示意图如下:

在桥接模式下,虚拟机和主机可以互相 ping通,虚拟机可以访问 Internet,虚拟机上的服务也可以通过虚拟机 IP地址在本机直接访问,如果有任何问题,可以按下面的步骤检查各个配置:

1、检查本地连接的属性里,是否勾选了VMware Bridge Protocol,如果没勾选上,则虚拟机和本机不能互相 ping通,如下图:

2、检查虚拟机的 IP地址,看是否和本机处于同一个网段内,如果不是,可以手工设置下 IP地址,网关和 DNS服务器配置可以参考本机,和本机一样即可。

打开 PowerShell 输入 ipconfig

然后把虚拟机的网关改成一样的,IP 地址不一样就行了

3、win10 默认是不开启 ping回应的,要设置为开启状态。 步骤:控制面板-Windows Defender 防火墙-左侧的 高级设置-入站规则,在列表中搜索(ICMP):

打开

NAT 服务是什么?

在学习下面的 NAT 模式之前先来看下 NAT 服务是什么?

什么是 NAT

NAT 是 Network Address Translation 网络地址转换的缩写。

NAT 是将私有 IP地址通过边界路由转换成外网 IP地址,在边界路由的 NAT地址转换表记录下这个转换映射记录,当外部数据返回时,路由使用 NAT技术查询 NAT转换表,再将目标地址替换成内网用户 IP地址。

端口映射是NAT的一种用途,功能是把在公网的地址转翻译成私有地址, 采用路由方式的 ADSL宽带路由器拥有一个动态或固定的公网IP,ADSL直接接在HUB或交换机上,所有的电脑共享上网。

端口映射分为动态和静态。

动态端口映射例如内网中的一台电脑要访问新浪网,会向 NAT网关发送数据包,包头中包括对方(就是新浪网)IP、端口和本机IP、端口,NAT网关会把本机IP、端口替换成自己的公网IP、一个未使用的端口,并且会记下这个映射关系,为以后转发数据包使用。然后再把数据发给新浪网,新浪网收到数据后做出反应,发送数据到 NAT网关的那个未使用的端口,然后 NAT网关将数据转发给内网中的那台电脑,实现内网和公网的通讯。当连接关闭时,NAT网关会释放分配给这条连接的端口,以便以后的连接可以继续使用。动态端口映射其实也就是 NAT网关的工作方式。

静态端口映射: 就是在NAT网关上开放一个固定的端口,然后设定此端口收到的数据要转发给内网哪个 IP和端口,不管有没有连接,这个映射关系都会一直存在。就可以让公网主动访问内网的一个电脑。

为什么出现了NAT?

IP地址只有32位,最多只有42.9亿个地址,还要去掉保留地址、组播地址,能用的地址只有36亿左右,但是当下有数以万亿的主机,没有这么多IP地址怎么办,后面有了IPv6,但是当下IPv4还是主流,利用IPv4怎么满足这么多主机的IP地址呢?

答案就是NAT,NAT技术使公司、机构以及个人产生以及局域网,然后在各个局域网的边界WAN端口使用一个或多个公网的IPv4进行一对多转换

NAT 模式

上面也说了,如果你不在局域网内,只有一个IP,那么NAT模式正适合你。

当然如果你在局域网内,NAT模式也未尝不可,不过使用 NAT模式后,主机就变成了双网卡:本身的网卡连接 Internet 或连接拨号的路由器,另一个虚拟网卡 VMnet8 连接由虚拟机组成的一个虚拟网络。

从外部网络来看,无法直接访问这个虚拟网络。虚拟网络则通过本机上的 NAT虚拟服务器进行转发访问 Internet。示意图如下:

NAT 模式是让虚拟机实现访问 Internet 最快的方式,几乎不用任何配置,只要主机能上网,那么虚拟机也就肯定能上网。如果有任何问题,可以通过下面的步骤进行排查:

1、检查主机上 VMware的 NAT服务和 DHCP服务是否开启,如下图:

检查这两个是否启动

2、检查虚拟机的 IP地址,是否和虚拟机 NAT配置的 Subnet Address 在同一个网段内,选择 Edit -> Virtual Network Editor 可以看到 NAT的配置信息

检查本机 IP 地址

在主机上,win+r,打开运行,输入cmd,打开命令行,输入 ipconfig,显示如下:

Wireless LAN adapter WLAN:

Connection-specific DNS Suffix . :
IPv6 Address. . . . . . . . . . . : 2408:8456:621:808f:b880:3aaf:8d41:36b4
Temporary IPv6 Address. . . . . . : 2408:8456:621:808f:4110:df08:b4c5:a1e8
Link-local IPv6 Address . . . . . : fe80::b880:3aaf:8d41:36b4%22
IPv4 Address. . . . . . . . . . . : 192.168.31.134
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : fe80::a4df:c2ff:fe46:e6cf%22
192.168.31.1

因为主机是笔记本,连接的是无线网,因此选择无线局域网适配器,如果连接的是有线网,就选择以太网适配器。 记住主机IP地址,以这里为例,是 192.168.31.134

NAT 模式的原理

这部分直接转载自 VMware虚拟机网络配置-NAT篇

先记住这个拓扑图,后面的设置都是按照这个图来的。

虚拟机的 IP都是由虚拟交换机决定的,由虚拟 NAT负责连接外网,而虚拟网卡 VMware Network Adapter Vmnet8 只是负责主机与虚拟机之间的通信。

NAT 网络配置

打开 VMware Workstation Pro,选择虚拟机的网络连接类型,新建虚拟机,一般默认就是 NAT模式,之后确定,返回主页面:

选择 编辑-虚拟网络编辑器,单击更改设置(点了才能进行下面的设置)

按照箭头指向,勾选对应内容:

注意下面的子网 IP,前两部分必须和主机 IP的前两部分一样,即 192.168,第三部分得不一样,不能是 31,这里填 80,第四部分补 0。子网掩码都是 255.255.255.0,填写完毕后,点击 NAT设置:

填入网关IP,前三部分,即网段必须是 192.168.80,和前面保持一致,第四部分随意,这里填 2,网关 IP整体就是 192.168.80.2,上面原理图中的 虚拟交换机IP 就是这里的网关IP,点击确定后返回,再点击 DHCP设置:

注意起始和结束的 IP网段也必须是 192.168.80,这个范围不要包括网关IP:192.168.80.2,图1中的虚拟 DHCP服务器设置完成,之后一路确定,NAT网络设置结束。(这里的范围就是分配给虚拟机的 IP)

配置虚拟机的网络设置

首先修改下配置文件

vim /etc/sysconfig/network-scripts/ifcfg-eth0

主要设置这两个,可以手动配置一个 IP

然后别忘了重启一下网络设置

service network restart

然后检查一下 IP 信息

ifconfig
# 如果命令输出结果太长可以使用
ifconfig | more

# 如果没找到命令,需要先下载一下网络工具
yum install net-tools

测试联通

开启虚拟机,Ubuntu 默认的 IP设置是自动获取,不需要更改,当然设置静态 IP也是可以的,参照图1即可。此时 Ubuntu是可以正常连接外网的。

接下来测试图1中的虚拟网卡作用,在主机上,win + Q,打开搜索框,输入 网络连接,回车,打开网络连接面板:

这里的 VMware Network Adapter Vmnet8 就是图1中的虚拟网卡,另外三个分别是主机的无线网卡、主机的有线网卡、VMware仅主机模式的虚拟网卡。右击 Vmnet8,选择属性:

可以选择自动获取,也可以手动设置,注意,手动的话,IP不能和虚拟网关IP一样,即不能是 192.168.80.2,之后一路确定,设置完成。

在 Ubuntu终端和 win10命令行中,互相 ping各自的IP地址,然后在虚拟网卡 Vmnet8,右键-禁用,在互相ping各自的IP地址,体会前后的区别。

Host-only 模式

Host-only 模式和 NAT一样,也相当于主机双网卡,网络拓扑和 NAT也是一样,只是主机不提供 NAT功能了,所以虚拟网络只能和主机访问,不能访问Internet。

如果需要一个完全隔离的网络环境,则 Host-only 最合适不过。

Host-only 相当于使用双绞线直接连接虚拟机和主机,这是最原始的网络结构,当然也是最灵活的。这种情况下虚拟机就不能访问Internet 了吗?局域网下的其他机器就不能访问虚拟机上的服务了吗?

当然不是。如果我们自己在主机上搭建起我们自己的 NAT服务和 DHCP服务,那么 Host-only 其实和 NAT是一样的。从下面的示意图也可以看出,Host-only和 NAT的唯一区别就在于,主机上少了 NAT这个部分。

类似于 NAT,具体的配置这里略过。下面通过 Windows上的 ICS服务(Internet Connection Sharing,Internet 连接共享)来实现 Host-only模式的虚拟机访问 Internet。

ICS是Windows上的一种共享网络访问的服务,类似于mini版NAT,提供了NAT地址转换和DHCP的功能,但不支持 端口转发功能(Port Forwarding)。

首先在网络连接里找到当前正在使用的连接,选择 属性 -> 共享,选中 “允许其他网络用户通过此计算机的 Internet 连接来连接”,然后在网络连接下拉框中选择 Host-only 对应的虚拟网卡(这里是 VMnet1),如下图:

在确定的时候,可能会弹出对话框提示错误:“Internet连接共享访问被启用时,出现了一个错误(null)”,这时去服务中找到 Windows Firewall,启动即可。(这是因为微软的 Hyper-v 导致的)

ICS配置好之后,Host-only就和 NAT一样了,在虚拟机中设置自动获取 IP或手工设置 IP,保证和 VMnet1处于同一个网段内,如果一切顺利,就可以在虚拟机中访问 Internet了。

配置能上网的静态 IP

首先确定物理机的网段:

把 "使用本地DHCP服务将 IP地址分配给虚拟机" 前面的勾去掉,目的是禁止动态给ubuntu虚拟机分配IP地址,其它地方不用修改。

然后记录下 VMware 的网关IP地址

依次进入 控制面板 >> 网络和 Internet >> 更改适配器设置,右键 VMware Network Adapter VMnet8

在 VMware Network Adapter VMnet8 图标上右键,选属性,然后选择 “Internet协议版本4(TCP/Ipv4)” 选项,然后点击 "属性"按钮。

然后弹出属性框,可以看到 “使用下面的IP地址” 下的IP地址中的内容,为了不跟 Ubuntu 虚拟机配置的网关 ip 产生冲突,需要将这个 IP 地址改成别的 IP 地址,比如改成 192.168.150.3

然后其它地方不用更改,此步骤完成。

打开VMware,在【我的计算机】 下选中要配置的 Ubuntu 虚拟机,点击【编辑虚拟机设置】,在左侧的【硬件】栏中选中【网络适配器】,选中右侧【网络连接】中的【 自定义(U):特定虚拟网络 】选项,选中下面的 【VMnet8 (NAT模式)"】选项,点击【确定】按钮。

ip addr 命令查看网卡名称,下图可以看出,网卡名称是 ens33,网卡名称以自己的 Ubuntu 系统为准,你的网卡名称可能不是 ens33,有可能是 ens37 这种名称。

ip addr

修改网络配置文件,网络配置文件存放在 /etc/netplan 目录下

ls 命令查看配置文件

ls /etc/netplan

从图上可以看出网络配置文件名为:01-network-config.yaml

sudo vim /etc/netplan/01-network-config.yaml

编辑 01-network-config.yaml 文件的内容为:

network:
version: 2
renderer: networkd
ethernets:
ens33: #网卡名,以ubuntu操作系统的网卡名称为准
dhcp4: no #ipv4关闭dhcp,用static模式
dhcp6: no #ip6关闭dhcp
addresses:
- 192.168.150.100/24 #本机IP地址
gateway4: 192.168.150.2 #vmware网关的的IP地址
nameservers: #DNS服务器
addresses: [114.114.114.114, 8.8.8.8, 1.1.1.1]

然后执行 sudo netplan apply 命令编译网络配置,

最后 ifconfig 检查:

References